多速率FIR滤波器 |
您所在的位置:网站首页 › fpga 数字滤波器 › 多速率FIR滤波器 |
该篇是FPGA数字信号处理的第15篇,选题为多速率信号处理系统中用到的多速率FIR滤波器。本文将简单介绍多速率信号处理系统的基本概念,以及使用Quartus和Vivado的IP核设计多速率FIR滤波器的方法。 多速率信号处理这个概念是相对于单速率(Single Rate)信号处理而言的。单速率是指整个信号处理流程中只有一种数据速率;多速率是指系统中存在多个数据速率。使用多速率信号处理可以节省存储空间、减少通信数据量、减少运算量、减轻设计难度。 比如在DDC(数字下变频)系统中,前级需要很高的采样率fs确保ADC采集到信号的信噪比;而在去载波并提取出低频的基带信号后,信号有效带宽已经很小,此时可以满足要求的采样率也远远低于fs,如果不进行数据速率转换的处理,会造成许多资源的浪费和设计上的困难(详情参考“FPGA综合系统设计(七):基于DDC的两路信号相位差检测: https://blog.csdn.net/FPGADesigner/article/details/80785174”)。 一个简单的多速率信号处理系统框图如下所示: 多速率FIR滤波器其实已经在上面链接中的设计用到过,本文再结合概念单独总结一下。后面的文章将介绍CIC滤波器和HB滤波器的设计。 抽取与内插当需要降低采样率时,输入信号数据每隔D-1个取一个,取出的数据依次排序,这个过程称作D倍抽取,采样率变为原来的1/D。但是我们需要确保抽取之后的采样率仍然可以满足Nyquist采样定理,否则会造成频谱的混叠。当然由于ADC的转换也会在整个频段内引入白噪声,因此在抽取前还是需要加入抗混叠滤波器。如下图所示: MATLAB中的语法可以很简单的实现抽取和插值操作。抽取过程如下: t = 0 : 1 / Fs : 0.5; c = 2 * pi * f * t; si=sin(c); %产生正弦波 D=8; %抽取倍数 d2 = si(1 : D : length(t)); %抽取 12345插值过程如下: t = 0 : 1/Fs : 0.5; c = 2 * pi * f * t; si = sin(c); %产生正弦波 I=8; %内插倍数 Isi = zeros(1, length(si)*I); %先构造全0序列 Isi(1 : I : length(Isi)) = si; %将源信号插入 123456滤波器的设计不再赘述。 FPGA设计Quartus和Vivado的FIR IP核都可以设置为多速率FIR模式,完成数据速率的转换工作。比如在上文链接内的设计中,ADC需要以100MHz的速率采集20MHz的信号,通过DDC解调后基带信号频率仅有500kHz。将FIR设置为10倍抽取模式,采样率降为10MHz,足以完成接下来的处理。 Quartus中以FIR Compiler IP核为例: Vivado中以FIR Compiler IP核的7.2版本为例: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |